using System;
using System.Data;
using System.Collections;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// Summary description for clsLogin
/// </summary>
namespace ReglasNegocio
{
    public class clsLogin
    {
        //variables
        AccesoDatos.clsLogin login;

        public clsLogin()
        {
            //instanciamos la clase
            login = new AccesoDatos.clsLogin();
        }

        public DataSet IniciarSesion(string Usuario, string password)
        {
            return login.IniciarSesion(Usuario, password);            
        }

        public DataSet MenuInicial()
        {
            return login.MenuInicial();            
        }

        public DataSet Menuhijos(string id_menu)
        {
            return login.MenuHijos(id_menu);
        }


        public void DesMarcarTreeView(TreeView TV)
        {
            //validar si el padre tiene hijos.
            int numhijos = TV.Nodes.Count;
            if (numhijos > 0)
            {
                for (int j = 0; j < numhijos; j++)
                {
                    TreeNode tNode = TV.Nodes[j];
                    tNode.Checked = false;
                    DesMarcarTreeNode(tNode);
                }
            }
        }

        private void DesMarcarTreeNode(TreeNode tNode)
        {
            //validar si el padre tiene hijos.
            int numhijos = tNode.ChildNodes.Count;
            if (numhijos > 0)
            {
                for (int j = 0; j < numhijos; j++)
                {
                    TreeNode tNodeh = tNode.ChildNodes[j];
                    tNodeh.Checked = false;
                    DesMarcarTreeNode(tNodeh);
                }
            }
        }

        public void MarcarTreeView(TreeView TV, ArrayList menuspermiso)
        {
            //validar si el padre tiene hijos.
            int numhijos = TV.Nodes.Count;
            if (numhijos > 0)
            {
                for (int j = 0; j < numhijos; j++)
                {
                    TreeNode tNode = TV.Nodes[j];
                    if (menuspermiso.IndexOf(tNode.Value) != -1) tNode.Checked = true;
                    MarcarTreeNode(tNode, menuspermiso);
                }
            }
        }

        private void MarcarTreeNode(TreeNode tNode, ArrayList menuspermiso)
        {
            //validar si el padre tiene hijos.
            int numhijos = tNode.ChildNodes.Count;
            if (numhijos > 0)
            {
                for (int j = 0; j < numhijos; j++)
                {
                    TreeNode tNodeh = tNode.ChildNodes[j];
                    if (menuspermiso.IndexOf(tNodeh.Value) != -1) tNodeh.Checked = true;
                    MarcarTreeNode(tNodeh, menuspermiso);
                }
            }
         }

        public void CargarTreeViewDir(TreeView TV, bool ck, string id_menu, ArrayList menuspermiso, string linkUsuario)
        {
            //validar si el padre tiene hijos.
            DataSet DT = new DataSet();
            DT = Menuhijos(id_menu);
            int numhijos = DT.Tables[0].Rows.Count;
            if ( numhijos > 0 )
            {                
                for(int j=0;j<numhijos;j++){
                    int permiso = 1;
                    if (menuspermiso != null)
                    {
                        if (menuspermiso.IndexOf(DT.Tables[0].Rows[j]["Id"].ToString()) == -1) permiso = 0;
                    }
                    if (permiso==1)
                    {
                        TreeNode tNode;
                        if (!ck)
                        {
                            if ((linkUsuario == DT.Tables[0].Rows[j]["Url"].ToString()) && (DT.Tables[0].Rows[j]["Url"].ToString() != ""))
                            {
                                tNode = new TreeNode("<div id='" + DT.Tables[0].Rows[j]["Url"].ToString() + "' class='ListalinkHijoselec'>" + DT.Tables[0].Rows[j]["Nombre"].ToString() + "</div>");
                            }
                            else
                            {
                                tNode = new TreeNode("<div id='" + DT.Tables[0].Rows[j]["Url"].ToString() + "' class='ListalinkHijonoselec'>" + DT.Tables[0].Rows[j]["Nombre"].ToString() + "</div>");
                            }
                        }
                        else
                        {
                            tNode = new TreeNode("<span id='" + DT.Tables[0].Rows[j]["Url"].ToString() + "' class='ListalinkCheck'>" + DT.Tables[0].Rows[j]["Nombre"].ToString() + "</span>");
                        }
                        
                        tNode.ShowCheckBox = ck;
                        if (ck)
                        {
                            tNode.Value = DT.Tables[0].Rows[j]["Id"].ToString();
                            tNode.SelectAction = TreeNodeSelectAction.None;
                        }
                        else
                        {
                            tNode.SelectAction = TreeNodeSelectAction.Expand;
                            tNode.Value = "";
                        }

                        TV.Nodes.Add(tNode);
                        AddNode(DT.Tables[0].Rows[j]["Id"].ToString(), DT.Tables[0].Rows[j]["Url"].ToString(), tNode, ck, menuspermiso);
                    } 
                }
            }else{
                // SECTION 2. Initialize the TreeView control.
                TV.Nodes.Clear();
                //TV.Nodes.Add(new TreeNode("No hay Menus asociados"));
            }
             // SECTION 3. Populate the TreeView with the DOM nodes.
            TV.CollapseAll();
            if (!ck)
            {
                //TV.ParentNodeStyle.CssClass = "ListalinkPadre";
                //TV.RootNodeStyle.CssClass = "ListalinkPadre";
                //TV.LeafNodeStyle.CssClass = "ListalinkHijo";
            }
        }

        private void AddNode(string id_menu, string url, TreeNode inTreeNode, bool ck, ArrayList menuspermiso)
        {
            TreeNode tNode;
            DataSet DT = new DataSet();
            DT = Menuhijos(id_menu);
            int numhijos = DT.Tables[0].Rows.Count;
            if (numhijos > 0)
            {
                for (int j=0; j < numhijos; j++)
                {
                    int permiso = 1;
                    if (menuspermiso != null)
                    {
                        if (menuspermiso.IndexOf(DT.Tables[0].Rows[j]["Id"].ToString()) == -1) permiso = 0;
                    }
                    if (permiso == 1)
                    {
                        //inTreeNode.Target = "_self";                        
                        if (ck)
                        {
                            inTreeNode.ChildNodes.Add(new TreeNode("<span id='" + DT.Tables[0].Rows[j]["Url"].ToString() + "' class='ListalinkCheck'>" + DT.Tables[0].Rows[j]["Nombre"].ToString() + "</span>"));
                            tNode = inTreeNode.ChildNodes[inTreeNode.ChildNodes.Count - 1];                      
                            tNode.Value = DT.Tables[0].Rows[j]["Id"].ToString();
                            tNode.ShowCheckBox = ck;
                        }
                        else
                        {
                            inTreeNode.ChildNodes.Add(new TreeNode("<div id='" + DT.Tables[0].Rows[j]["Url"].ToString() + "' class='ListalinkHijonoselec'>" + DT.Tables[0].Rows[j]["Nombre"].ToString() + "</div>"));
                            tNode = inTreeNode.ChildNodes[inTreeNode.ChildNodes.Count - 1];
                            tNode.ShowCheckBox = ck;
                            tNode.SelectAction = TreeNodeSelectAction.Expand;
                            tNode.Value = "";
                        }
                        AddNode(DT.Tables[0].Rows[j]["Id"].ToString(), DT.Tables[0].Rows[j]["Url"].ToString(), tNode, ck, menuspermiso);
                    }
                }
            }
            else
            {
                if (!ck)
                {
                    inTreeNode.Value = url;
                    inTreeNode.ToolTip = url;
                    //inTreeNode.NavigateUrl = "javascript:alert('prueba');__doPostBack('ctl00$Panel0_content$Arbol0','s" + url + "');"; 
                    inTreeNode.Target = "_self";
                    inTreeNode.SelectAction = TreeNodeSelectAction.Select;
                }
                else
                {
                    inTreeNode.Target = "_self";
                    inTreeNode.SelectAction = TreeNodeSelectAction.None;

                }
            }   
        }

        
    }
}
